﻿Imports PTIC_Util

Namespace moteurTauxGaranti1

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <remarks></remarks>
    Public Class simulationStressTestTrAge
        Inherits simulationIndividuelle
        ''' <summary>
        ''' 
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub New(ByVal moteur1 As IIntegMoteur_MethodeEqTarif, _
                       ByVal nom As String, _
                       ByVal chocMin As Double, _
                       ByVal chocMax As Double, _
                       ByVal pas As Double, _
                       ByVal chocRadar As Double)
            MyBase.New(moteur1, nom, chocMin, chocMax, pas, chocRadar)
        End Sub
        ''' <summary>
        ''' 
        ''' </summary>
        ''' <remarks></remarks>
        Protected Overrides Sub procedureCalcul()

            Dim val As Double = _chocMin, sumCSR_scenCentral(_moteur.tableTravail.Rows.Count - 1) As Double
            CType(_resultats, DataTable).Clear()

            'Sauvegarde des CSR du scénario central
            For i As Integer = 0 To _moteur.tableTravail.Rows.Count - 1
                sumCSR_scenCentral(i) = _moteur.tableTravail.Rows(i)(nomSumCSR)
            Next

            Dim rowEnCours As DataRow

            'La sensibilité
            While val <= _chocMax
                rowEnCours = _resultats.NewRow
                'Retraiter la table en entrée
                For i As Integer = 0 To _moteur.tableTravail.Rows.Count - 1
                    If _moteur.tableTravail.Rows(i)(nomtrAge) = "C" Then
                        _moteur.tableTravail.Rows(i)(nomSumCSR) = sumCSR_scenCentral(i) * (1 + val)
                    End If
                Next
                _moteur.calcule(False)
                rowEnCours("ST_Tr_age") = val
                rowEnCours("S/P") = _moteur.PPurePf / _moteur.PTechPf
                _resultats.Rows.Add(rowEnCours)
                val = val + _pas
            End While

            'Le radar
            For i As Integer = 0 To _moteur.tableTravail.Rows.Count - 1
                If _moteur.tableTravail.Rows(i)(nomtrAge) = "C" Then
                    _moteur.tableTravail.Rows(i)(nomSumCSR) = sumCSR_scenCentral(i) * (1 + _chocRadar)
                End If
            Next
            _moteur.calcule(False)
            _valeurRadar = _moteur.PPurePf / _moteur.PTechPf

            For i As Integer = 0 To _moteur.tableTravail.Rows.Count - 1
                If _moteur.tableTravail.Rows(i)(nomtrAge) = "C" Then
                    _moteur.tableTravail.Rows(i)(nomSumCSR) = sumCSR_scenCentral(i)
                End If
            Next

        End Sub
    End Class

End Namespace
